#include "Archivo.h"

void abrirArchivoBinario(fstream &archivo,const string &nombre)
{
	// Se intenta abrir el archivo.
	archivo.open(nombre.c_str(),ios_base::out |
		ios_base::binary | ios_base::in);

	// En caso de no haber tenido exito...
	if (!archivo.is_open())
	{
		// Se intenta crear el archivo.
		crearArchivoBinario(archivo,nombre);
		archivo.close();
		abrirArchivoBinario(archivo,nombre);
	}
	else
	{
		archivo.clear();

		// Se activan las excepciones en el archivo.
		archivo.exceptions(ios::failbit | ios::badbit);
	}
}

void crearArchivoBinario(fstream &archivo,const string &nombre)
{
	// ...se crea el archivo.
	archivo.open(nombre.c_str(),ios_base::out |
		ios_base::binary);

	// En caso de no haber podido crear el archivo...
	if (!archivo.is_open())
		// Se arroja una excepcion.
		throw string("No se pudo crear el archivo");

	archivo.clear();

	// Se activan las excepciones en el archivo.
	archivo.exceptions(ios::failbit | ios::badbit);
}
